﻿# coding: UTF-8
# Name:
# Author: LYC
# Created:

import sys
from collections import deque

#deque是双端队列,不仅可以从队头和队尾进出
#还基本能表现得像一个list(除pop方法有参数差异外)
#使用可迭代对象初始化deque
dq = deque((1,2,3))

#与list一样,可以使用append和pop模拟一个栈
dq.append(4)
print dq.pop()

#也可以使用extend加入一个可迭代对象的所有元素
dq.extend(xrange(4,10))

#也可以下标访问
for i in xrange(4,10):
    print dq[3]
    del dq[3]

#deque扩展了list右端操作的方法并提供了左端操作的版本
dq.appendleft(4)
print dq.popleft()

#注意,此处元素顺序类似进栈
dq.extendleft(xrange(4,10))

for i in xrange(4,10):
    print dq[0]
    del dq[0]

#演示使用rotate实现一个跑马灯
horse = deque(u"====马====")
for i in xrange(100):
    print u"".join(horse)
    horse.rotate(1)